综述
? 最近一直疑惑于C++中对于字符串存储相关的问题,经过深入研究,现做如下探讨,有错误之处,请留言。
char wchar_t char16_t char32_t 区别
首先这几种字符类型的首要区别就是其占用存储空间的大小不同。char 有一个字节表示,wchar_t 宽体字符,由两个字符表示。char16_t,char32_t C++ 11 新增的字符类型,char16_t 占两个字节,char32_t 占四个字节。
字符数组初始化方式不同,请留意如下代码的字符串前缀。
12345678910111213#include
#include
using namespace std;
int main()
{
char nameChar[] = "This is a char array";
wchar_t nameWchar[] = L"This is a wchar array";
char16_t nameChar16[] = u"This is a char16 array";
char32_t nameChar32[] = U"This is a char32 array";
cin.get();
}
中文编码问题
我们首先研究中文字符常量存储编码同代码文件编码格式的关联关系。
当代码文件的编码方式为Unicode时,如下代码:
123456789101112131415#include
using namespace std;
int main()
{
wchar_t name[] = L"我爱学习";
for (size_t i = 0; i < sizeof(name); i++)
{
printf("%X",name[i]);
cout |